package dbsync4j.core.behavior;

import java.util.Collection;

/**
 * Abstrai os metadados de uma base de dados (database ou schema).
 * 
 * @author Rafael
 *
 */
public interface Schema extends DatabaseObject {

	/**
	 * Devolve a procedures do schema.
	 * 
	 * @return procedures
	 */
    public Collection<Procedure> getProcedures();

    /**
     * Devolve as tabelas do schema.
     * 
     * @return tabelas
     */
    public Collection<Table> getTables();

    /**
     * Devolve uma tabela especifica pelo nome.
     * 
     * @param tableName nome da tabela
     * @return tabela
     */
    public Table getTable(String tableName);

    /**
     * Devolve uma procedure especifica pelo nome.
     * 
     * @param procedureName nome da procedure
     * @return procedure
     */
    public Procedure getProcedure(String procedureName);
    
    public Server getServer();
    
}